import java.util.ArrayList;
import java.util.*;

public class TestDemo3B {
    public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) {
        if (array == null || num1 == null || num2 == null) {
            return;
        }
        num1[0] = 0;
        num2[0] = 0;//这两个不初始化也行
        int tem = array[0];
        for (int i = 1; i < array.length; i++) {
            tem ^= array[i];
        }
        int length = Integer.SIZE;//求int类型有多少比特位
        int flag = 1;
        int i = 0;
        while (length > 0) {
            //让1往左移到n位,这里注意判断条件必须位不为0,因为求的是从低到高求第一个出现1的位置
            if (((flag << i) & tem) != 0) {
                flag <<= i;//要赋值
                break;
            }
            i++;
            length--;
        }//分为两个组,同组中重复的一定都在一个组,这样每组中剩下的一个就是出现一次的
        for (int j = 0; j < array.length; j++) {
            if ((flag & array[j]) == 0) {
                num1[0] ^= array[j];
            } else {
                num2[0] ^= array[j];
            }
        }
    }


    public ArrayList<ArrayList<Integer>> FindContinuousSequence(int sum) {
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        int start=1;
        int end=2;
        while(start<end){
            //连续序列的求和
            int add=(start+end)*(end-start+1)/2;
            if(add < sum) {//累加的和小于sum说明需要增大,所以要后移到一位
                end++;
            }
            else if(add>sum){//累加的和大于sum说明需要减小,所以start要后移到一位
                start++;
            }
            else{//正好等于sum
                ArrayList<Integer>tmp=new  ArrayList<>();
                for(int i=start;i<=end;i++){
                    tmp.add(i);
                }
                 list.add(tmp);
                end++;//end需要后移到,判断满足的另外一种情况
            }
        }
        return list;
    }

    //字符逆置的问题
    public String LeftRotateString(String str,int n){
        if(str.length()==0||n==0){
            return str;
        }
        char []ch=str.toCharArray();//字符转化为数组
        n%=str.length();//每str.length一次循环,减少执行的次数
        while(n>0){//循环一次--
            leftRotateStringHelper(ch);
            n--;
        }
        return new String(ch);
    }
    public void leftRotateStringHelper(char[]ch){
        char tem=ch[0];//把第一次元素存起来
        int i=0;
        //把从第一个之后的数组全部往前移到一次
        for(;i<ch.length-1;i++){
            ch[i]=ch[i+1];
        }
        ch[i]=tem;//最后一次下标就是要逆置的值
    }
}
class Main{
    public static void main(String[]args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();//共有几组
        int []tem=new int [3*n];//每组3个人,总共的人数
        for(int i=0;i<tem.length;i++){
            tem[i]=sc.nextInt();//给每个人设置值
        }
        long sum=0;
        Arrays.sort(tem);
        for(int i=0;i<n;i++){
            sum+=tem[tem.length-2*(i+1)];
        }
        System.out.println(sum);
    }
}
//删除公共字符
class Main1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.nextLine();
        String str2 = sc.nextLine();
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < str2.length(); i++) {
            if (map.get(str2.charAt(i)) == null) {
                map.put(str2.charAt(i), 1);
            }else{
                map.put(str2.charAt(i),map.get(str2.charAt(i))+1);
            }
        }String tmp="";
        for(int i=0;i<str1.length();i++){
            if(map.get(str1.charAt(i))==null){
                tmp+=str1.charAt(i);
            }
        }
        System.out.println(tmp);
    }
}
class Main2{
    public static void reverse(char[]ch,int left,int right){
        while(left<right){
            char tem=ch[left];
            ch[left]=ch[right];
            ch[right]=tem;
            left++;
            right--;
        }
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        int length=str.length();
        char[]ch=str.toCharArray();
        reverse(ch,0,length-1);
        int i=0;
        while(i<length){
            int j=i;
            while(j<length&&ch[j]!=' '){
                j++;
            }
            if(j<length){
                reverse(ch,i,j-1);
                i=j+1;
            }else{
                reverse(ch,i,j-1);
                i=j;
            }
        }
        String str1=new String(ch);
        System.out.println(str1);
    }
}
//每日一题2.1（找到有几段是非递增和非递减）
class Main4{
    public static void main(String []args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int []array=new int [n+1];
        for(int i=0;i<array.length;i++){
            array[i]=sc.nextInt();
        }
        int i=0;
        int count=0;
        while(i<n){
            if(array[i]<array[i+1]){//递增的情况，直到碰到开始递减的情况就结束
                while(i<n&&array[i]<array[i+1]){
                    i++;
                }
                count++;//记录当前递增
                i++;//后移
            }else if(array[i]==array[i+1]){//非递增和非递减直接跳过下标
                i++;
            }
            else{//同理递增的情况
                while(i<n&&array[i]>array[i+1]){
                    i++;
                }
                count++;
                i++;
            }
        }
        System.out.println(count);
    }
}
//字符串的倒置
class Main5{
    //逆置字符串
    public static void reverse(char[]ch,int left,int right) {
        while (left < right) {
            char tem = ch[left];
            ch[left] = ch[right];
            ch[right] = tem;
            left++;
            right--;
        }
    }
    public static void main1(String[]args){
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        char[]ch=str.toCharArray();//字符转换成数组
        int len=str.length();
        reverse(ch,0,str.length()-1);//整体字符串的逆置
        int i=0;
        while(i<len){
           int j=i;
           while(j<len&&ch[j]!=' '){//没有遇到空格就后移,遇到就停止
               j++;
           }//空格前的一段单纯逆置
           if(j<len){
               reverse(ch,i,j-1);
           }else{//直到j到了最后一个字符的下一个
               reverse(ch,i,j-1);
               i=j;//因为j定义在while里面不能用j(识别不到),i在while外可以识别到
           }
        }
        String str1=new String(str);//把数组转换为字符串
        System.out.println(str1);
    }
    public static void main(String []args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int []array=new int [n];
        for(int i=0;i<n;i++){
            array[i]=sc.nextInt();
        }
        int tem=array[0];
        int max=array[0];
        for(int i=1;i<n;i++){
            if(tem>0){
                tem+=array[i];
            }else{
                tem=array[i];
            }
            if(max<tem){
                max=tem;
            }
        }
        System.out.println(max);
    }
}


